WebAssembly System Interface(WASI) ํ์ผ ์์คํ , ๊ฐ์ํ ๊ธฐ๋ฅ, ํฌ๋ก์ค ํ๋ซํผ ์ฑ ๊ฐ๋ฐ์ ๋ฏธ์น๋ ์ํฅ ํ์. WASI๊ฐ WebAssembly ๋ชจ๋์ ์ํ ์์ ํ๊ณ ์ด์ ๊ฐ๋ฅํ ํ์ผ ์์คํ ํ๊ฒฝ์ ์ ๊ณตํ๋ ๋ฐฉ๋ฒ ํ์ต.
WebAssembly WASI ํ์ผ ์์คํ : ๊ฐ์ ํ์ผ ์์คํ ๊ตฌํ ์ฌ์ธต ๋ถ์
WebAssembly(Wasm)๋ ์ด์์ฑ ์๊ณ ํจ์จ์ ์ด๋ฉฐ ์์ ํ ์คํ ํ๊ฒฝ์ ์ ๊ณตํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ ํ๊ฒฝ์ ํ์ ์ ๊ฐ์ ธ์์ต๋๋ค. ํ์ง๋ง WebAssembly๋ ์ค๊ณ์ ๊ฒฉ๋ฆฌ๋์ด ์์ด ์์คํ ๋ฆฌ์์ค์ ์ง์ ์ ๊ทผํ ์ ์์ต๋๋ค. ์ด๋ WebAssembly ์์คํ ์ธํฐํ์ด์ค(WASI)๊ฐ ๋ฑ์ฅํฉ๋๋ค. WASI๋ WebAssembly ๋ชจ๋์ด ์ด์ ์ฒด์ ์ ์ํธ ์์ฉํ ์ ์๋ ํ์คํ๋ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๋ฉฐ, WASI์ ์ค์ํ ๋ถ๋ถ์ ๊ฐ์ ํ์ผ ์์คํ ๊ตฌํ์ ๋๋ค.
WASI๋ ๋ฌด์์ธ๊ฐ?
WASI(WebAssembly System Interface)๋ WebAssembly๋ฅผ ์ํ ๋ชจ๋์ ์์คํ ์ธํฐํ์ด์ค์ ๋๋ค. WebAssembly ๋ชจ๋์ด ํ์ผ ์์คํ , ๋คํธ์ํฌ, ์๊ณ์ ๊ฐ์ ์ด์ ์ฒด์ ๋ฆฌ์์ค์ ์์ ํ๊ณ ์ด์ ๊ฐ๋ฅํ ๋ฐฉ์์ผ๋ก ์ก์ธ์คํ ์ ์๋๋ก ํ๋ ๊ฒ์ ๋ชฉํ๋ก ํฉ๋๋ค. ์น ๋ธ๋ผ์ฐ์ ์ธ๋ถ์์ WebAssembly๋ฅผ ์คํํ๋ ์ ํต์ ์ธ ๋ฐฉ๋ฒ์ ๋ธ๋ผ์ฐ์ ๋ณ API ๋๋ ์์ ํ๋ซํผ๋ณ ๋ฐ์ธ๋ฉ์ ์์กดํ์ต๋๋ค. WASI๋ ์ด๋ฅผ ํ์คํํ์ฌ WebAssembly ๋ชจ๋์ด ์ฌ์ปดํ์ผ ์์ด ์๋ฒ ๋๋ ์์คํ ๋ถํฐ ํด๋ผ์ฐ๋ ์๋ฒ์ ์ด๋ฅด๊ธฐ๊น์ง ๋ค์ํ ํ๊ฒฝ์์ ์คํ๋ ์ ์๋๋ก ํฉ๋๋ค.
๊ฐ์ ํ์ผ ์์คํ ์ ํ์์ฑ
ํธ์คํธ ํ์ผ ์์คํ ์ ์ง์ ์ ๊ทผํ๋ ๊ฒ์ ์๋นํ ๋ณด์ ์ํ์ ์ด๋ํ ์ ์์ต๋๋ค. ์ ์์ ์ด๊ฑฐ๋ ์์๋ WebAssembly ๋ชจ๋์ ๋ฏผ๊ฐํ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฑฐ๋, ์ฐ๊ฑฐ๋, ์ญ์ ํ ์ ์์ต๋๋ค. ์ด๋ฌํ ์ํ์ ์ํํ๊ธฐ ์ํด WASI๋ ๊ฐ์ ํ์ผ ์์คํ ์ ๊ตฌํํฉ๋๋ค. ์ด ๊ฐ์ ํ์ผ ์์คํ ์ WebAssembly ๋ชจ๋๊ณผ ํธ์คํธ ํ์ผ ์์คํ ๊ฐ์ ์ค๊ฐ์ ์ญํ ์ ํฉ๋๋ค. ์ด๋ฅผ ํตํด WebAssembly ๋ชจ๋์ ํต์ ๋๊ณ ์์ ํ ๋ฐฉ์์ผ๋ก ํ์ผ ๋ฐ ๋๋ ํ ๋ฆฌ์ ์ํธ ์์ฉํ ์ ์์ต๋๋ค.
๊ฐ์ ํ์ผ ์์คํ ์ ์ฃผ์ ์ด์ :
- ๋ณด์: ๊ฐ์ ํ์ผ ์์คํ ์ WebAssembly ๋ชจ๋์ ์ก์ธ์ค๋ฅผ ํธ์คํธ ํ๊ฒฝ์์ ๋ช ์์ ์ผ๋ก ํ์ฉํ ๋๋ ํฐ๋ฆฌ์ ํ์ผ๋ก๋ง ์ ํํฉ๋๋ค. ์ด ์๋๋ฐ์ฑ ๋ฉ์ปค๋์ฆ์ ๋ฏผ๊ฐํ ๋ฐ์ดํฐ์ ๋ํ ๋ฌด๋จ ์ก์ธ์ค๋ฅผ ๋ฐฉ์งํฉ๋๋ค.
- ์ด์์ฑ: WebAssembly ๋ชจ๋์ ๊ธฐ๋ณธ ํธ์คํธ ์ด์ ์ฒด์ ์ ๊ด๊ณ์์ด ์ผ๊ด๋ ๊ฐ์ ํ์ผ ์์คํ ์ธํฐํ์ด์ค์ ์ํธ ์์ฉํฉ๋๋ค. ์ด๋ฅผ ํตํด ๋ชจ๋์ ๋ค์ํ ํ๋ซํผ์์ ์์ธก ๊ฐ๋ฅํ๊ฒ ์๋ํฉ๋๋ค.
- ์ฌํ์ฑ: ๊ฐ์ ํ์ผ ์์คํ ์ ๋ด์ฉ๊ณผ ๊ตฌ์กฐ๋ฅผ ์ ์ดํจ์ผ๋ก์จ ํธ์คํธ ํ๊ฒฝ์ WebAssembly ๋ชจ๋์ ์คํ์ด ์ฌํ ๊ฐ๋ฅํ๋๋ก ๋ณด์ฅํ ์ ์์ต๋๋ค. ์ด๋ ๊ฒฐ์ ๋ก ์ ๋์์ด ํ์ํ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ค์ํฉ๋๋ค.
- ํ ์คํธ ์ฉ์ด์ฑ: ๊ฐ์ ํ์ผ ์์คํ ์ ๊ฐ๋ฐ์๊ฐ WebAssembly ๋ชจ๋์ ์ํ ๊ฒฉ๋ฆฌ๋ ํ ์คํธ ํ๊ฒฝ์ ์ฝ๊ฒ ๋ง๋ค ์ ์๋๋ก ํฉ๋๋ค. ์ด๋ ์ฝ๋์ ์ ํ์ฑ๊ณผ ๊ฒฌ๊ณ ์ฑ์ ํ์ธํ๋ ํ๋ก์ธ์ค๋ฅผ ๋จ์ํํฉ๋๋ค.
WASI ํ์ผ ์์คํ ์๋ ๋ฐฉ์
WASI ํ์ผ ์์คํ ์ WebAssembly ๋ชจ๋์ POSIX ์ ์ฌ API(์: `open`, `read`, `write`, `mkdir`, `rmdir`)๋ฅผ ์ ๊ณตํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ฌํ API ํธ์ถ์ ํธ์คํธ ์ด์ ์ฒด์ ์ ํ์ผ ์์คํ ์ ์ง์ ๋งคํ๋์ง ์์ต๋๋ค. ๋์ , WASI ๋ฐํ์์ด ์ด๋ฅผ ์ค์ฌํ์ฌ ๊ฐ์ ํ์ผ ์์คํ ์์ ์ ์ ์๋ ์ก์ธ์ค ์ ํ ์กฐ๊ฑด์ ๋ฐ๋ผ ํธ์คํธ ํ์ผ ์์คํ ์ ์ ์ ํ ์์ ์ผ๋ก ๋ณํํฉ๋๋ค.
์ฃผ์ ๊ตฌ์ฑ ์์:
- ํ์ผ ๋์คํฌ๋ฆฝํฐ: WASI๋ ์ด๋ฆฐ ํ์ผ ๋ฐ ๋๋ ํฐ๋ฆฌ๋ฅผ ๋ํ๋ด๊ธฐ ์ํด ํ์ผ ๋์คํฌ๋ฆฝํฐ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ด๋ฌํ ํ์ผ ๋์คํฌ๋ฆฝํฐ๋ WASI ๋ฐํ์์ด ๊ด๋ฆฌํ๋ ๋ถํฌ๋ช ํ ์ ์์ ๋๋ค. WebAssembly ๋ชจ๋์ ์ด๋ฌํ ํ์ผ ๋์คํฌ๋ฆฝํฐ๋ฅผ ํตํด ํ์ผ ๋ฐ ๋๋ ํฐ๋ฆฌ์ ์ํธ ์์ฉํฉ๋๋ค.
- ์ฌ์ ์ด๋ฆฐ ๋๋ ํฐ๋ฆฌ: ํธ์คํธ ํ๊ฒฝ์ ๋๋ ํฐ๋ฆฌ๋ฅผ ์ฌ์ ์ด๊ณ ํ์ผ ๋์คํฌ๋ฆฝํฐ๋ฅผ ํ ๋นํ ์ ์์ต๋๋ค. ์ด๋ฌํ ์ฌ์ ์ด๋ฆฐ ๋๋ ํฐ๋ฆฌ๋ WebAssembly ๋ชจ๋์ ํ์ผ ์์คํ ์ก์ธ์ค์ ๋ํ ๋ฃจํธ ๋๋ ํฐ๋ฆฌ ์ญํ ์ ํฉ๋๋ค. WebAssembly ๋ชจ๋์ ์ด๋ฌํ ์ฌ์ ์ด๋ฆฐ ๋๋ ํฐ๋ฆฌ ๋ด์์ ํ์ํ์ฌ ํ์ผ ๋ฐ ํ์ ๋๋ ํฐ๋ฆฌ์ ์ก์ธ์คํ ์ ์์ต๋๋ค.
- ๊ถํ: WASI๋ ๊ถํ ๊ธฐ๋ฐ ๋ณด์ ๋ชจ๋ธ์ ์ฌ์ฉํฉ๋๋ค. ๋๋ ํฐ๋ฆฌ๊ฐ ์ฌ์ ์ด๋ฆฌ๋ฉด ํธ์คํธ ํ๊ฒฝ์ ์ฝ๊ธฐ ์ก์ธ์ค, ์ฐ๊ธฐ ์ก์ธ์ค ๋๋ ์ ํ์ผ ๋ฐ ๋๋ ํฐ๋ฆฌ๋ฅผ ๋ง๋ค ์ ์๋ ๊ธฐ๋ฅ๊ณผ ๊ฐ์ ํน์ ๊ถํ์ WebAssembly ๋ชจ๋์ ๋ถ์ฌํ ์ ์์ต๋๋ค.
- ๊ฒฝ๋ก ํด์: WebAssembly ๋ชจ๋์ด ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํ์ฌ ํ์ผ์ด๋ ๋๋ ํฐ๋ฆฌ์ ์ก์ธ์คํ๋ ค๊ณ ํ๋ฉด WASI ๋ฐํ์์ ์ฌ์ ์ด๋ฆฐ ๋๋ ํฐ๋ฆฌ๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ฒฝ๋ก๋ฅผ ํด์ํฉ๋๋ค. ์ด ํ๋ก์ธ์ค์๋ ๊ฒฝ๋ก์ ๊ฐ ๋๋ ํฐ๋ฆฌ์ ๊ด๋ จ๋ ๊ถํ์ ํ์ธํ์ฌ WebAssembly ๋ชจ๋์ด ํ์ํ ๊ถํ์ ๊ฐ์ง๊ณ ์๋์ง ํ์ธํ๋ ์์ ์ด ํฌํจ๋ฉ๋๋ค.
์์: WASI์์ ํ์ผ ์ก์ธ์ค
ํธ์คํธ ํ๊ฒฝ์ด `/data`๋ผ๋ ๋๋ ํฐ๋ฆฌ๋ฅผ ์ฌ์ ์ด๊ณ ํ์ผ ๋์คํฌ๋ฆฝํฐ 3์ ํ ๋นํ๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. WebAssembly ๋ชจ๋์ ๋ค์ ์ฝ๋(์์ฌ ์ฝ๋)๋ฅผ ์ฌ์ฉํ์ฌ `/data` ๋๋ ํฐ๋ฆฌ ๋ด์ `input.txt` ํ์ผ์ ์ด ์ ์์ต๋๋ค.
file_descriptor = wasi_open(3, "input.txt", ...);
`wasi_open` ํจ์๋ ์ฌ์ ์ด๋ฆฐ ๋๋ ํฐ๋ฆฌ(3)์ ํ์ผ ๋์คํฌ๋ฆฝํฐ์ ํ์ผ์ ๋ํ ์๋ ๊ฒฝ๋ก(`input.txt`)๋ฅผ ์ธ์๋ก ๋ฐ์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ WASI ๋ฐํ์์ WebAssembly ๋ชจ๋์ด ํ์ผ์ ์ด ์ ์๋ ํ์ํ ๊ถํ์ ๊ฐ์ง๊ณ ์๋์ง ํ์ธํฉ๋๋ค. ๊ถํ์ด ๋ถ์ฌ๋๋ฉด WASI ๋ฐํ์์ ์ด๋ฆฐ ํ์ผ์ ๋ํ๋ด๋ ์ ํ์ผ ๋์คํฌ๋ฆฝํฐ๋ฅผ ๋ฐํํฉ๋๋ค.
์ค์ ์ ํ๋ฆฌ์ผ์ด์
WASI ํ์ผ ์์คํ ์ ๋ธ๋ผ์ฐ์ ์ธ๋ถ์์ WebAssembly์ ๋ค์ํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค. ๋ช ๊ฐ์ง ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.- ์๋ฒ๋ฆฌ์ค ์ปดํจํ : WASI๋ ์๋ฒ๋ฆฌ์ค ํ๊ฒฝ์์ WebAssembly ํจ์๋ฅผ ์คํํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ฐ์ ํ์ผ ์์คํ ์ ํตํด ์ด๋ฌํ ํจ์๋ ๋ฐ์ดํฐ ๋ฐ ๊ตฌ์ฑ ํ์ผ์ ์์ ํ๊ณ ํจ์จ์ ์ผ๋ก ์ก์ธ์คํ ์ ์์ต๋๋ค.
- ์ฃ์ง ์ปดํจํ : WASI๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ฆฌ์์ค๊ฐ ์ ํ๋ ์ฅ์น์์ ์คํ๋์ด์ผ ํ๋ ์ฃ์ง ์ปดํจํ ์๋๋ฆฌ์ค์ ์ ํฉํฉ๋๋ค. WASI ํ์ผ ์์คํ ์ ์ด๋ฌํ ์ฅ์น์์ ๋ฐ์ดํฐ ๋ฐ ๊ตฌ์ฑ์ ๊ด๋ฆฌํ๋ ๊ฐ๋ณ๊ณ ์ด์ ๊ฐ๋ฅํ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์ฐ์ ์ผ์๋ WASI๋ฅผ ์ฌ์ฉํ์ฌ ํด๋ผ์ฐ๋๋ก ๋ณด๋ด๊ธฐ ์ ์ ๋ฐ์ดํฐ๋ฅผ ๋ก์ปฌ์์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
- ์๋ฒ ๋๋ ์์คํ : WASI๋ ๋ง์ดํฌ๋ก์ปจํธ๋กค๋ฌ ๋ฐ IoT ์ฅ์น์ ๊ฐ์ ์๋ฒ ๋๋ ์์คํ ์ ์ํ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ฐ์ ํ์ผ ์์คํ ์ ํตํด ์ด๋ฌํ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ๋์จ์ด ๋ฆฌ์์ค์ ์ก์ธ์คํ๊ณ ํต์ ๋ ๋ฐฉ์์ผ๋ก ๋ค๋ฅธ ์ฅ์น์ ํต์ ํ ์ ์์ต๋๋ค.
- ๋ช ๋ น์ค ๋๊ตฌ: WASI๋ฅผ ์ฌ์ฉํ๋ฉด ๋ชจ๋ ์ด์ ์ฒด์ ์์ ์คํํ ์ ์๋ ์ด์ ๊ฐ๋ฅํ ๋ช ๋ น์ค ๋๊ตฌ๋ฅผ ๊ตฌ์ถํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๊ฐ๋ฐ์๋ Linux, macOS ๋ฐ Windows์์ ์ํํ๊ฒ ์๋ํ๋ WASI ๊ธฐ๋ฐ ์ด๋ฏธ์ง ์ฒ๋ฆฌ ๋๊ตฌ๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ : ์ฌ๋ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ ์์ WASI๋ฅผ ์คํํ์ฌ WebAssembly ๋ฐํ์ ๋ด์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ก์ง(์: ์ ์ฅ ํ๋ก์์ ๋๋ ์ฌ์ฉ์ ์ ์ ํจ์)์ ์์ ํ๊ณ ์ด์ ๊ฐ๋ฅํ ๋ฐฉ์์ผ๋ก ์คํํ ์ ์๋๋ก ํฉ๋๋ค. ์ด๋ ๋ ๋์ ๊ฒฉ๋ฆฌ์ ๋ณด์์ ํ์ฉํ์ฌ ์ ์ฑ ์ฝ๋๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ์ ์ง์ ์ํฅ์ ๋ฏธ์น๋ ๊ฒ์ ๋ฐฉ์งํฉ๋๋ค.
๋ณด์ ๊ณ ๋ ค ์ฌํญ
WASI๋ ํธ์คํธ ํ์ผ ์์คํ ์ ์ง์ ์ก์ธ์คํ๋ ๊ฒ์ ๋นํด ๋ณด์์ ํฌ๊ฒ ํฅ์์ํค์ง๋ง, ๊ด๋ จ๋ ๋ณด์ ๊ณ ๋ ค ์ฌํญ์ ์ดํดํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. WASI ํ์ผ ์์คํ ์ ๋ณด์์ WASI ๋ฐํ์์ ์ฌ๋ฐ๋ฅธ ๊ตฌํ๊ณผ ํธ์คํธ ํ๊ฒฝ์ ์ ์คํ ๊ตฌ์ฑ์ ๋ฌ๋ ค ์์ต๋๋ค.
์ ์ฌ์ ๋ณด์ ์ํ:
- WASI ๋ฐํ์์ ๋ฒ๊ทธ: WASI ๋ฐํ์์ ๋ฒ๊ทธ๋ WebAssembly ๋ชจ๋์ด ๋ณด์ ์ ํ์ ์ฐํํ๊ณ ํธ์คํธ ํ์ผ ์์คํ ์ ๋ํ ๋ฌด๋จ ์ก์ธ์ค ๊ถํ์ ์ป์ ์ ์์ต๋๋ค.
- ์ฌ์ ์ด๋ฆฐ ๋๋ ํฐ๋ฆฌ ๊ตฌ์ฑ ์ค๋ฅ: ํธ์คํธ ํ๊ฒฝ์ด ์ฌ์ ์ด๋ฆฐ ๋๋ ํฐ๋ฆฌ๋ฅผ ์๋ชป ๊ตฌ์ฑํ๊ฑฐ๋ WebAssembly ๋ชจ๋์ ๊ณผ๋ํ ๊ถํ์ ๋ถ์ฌํ๋ฉด ๋ฏผ๊ฐํ ๋ฐ์ดํฐ๋ ๊ธฐ๋ฅ์ด ๋ ธ์ถ๋ ์ ์์ต๋๋ค.
- ๊ณต๊ธ๋ง ๊ณต๊ฒฉ: WebAssembly ๋ชจ๋์ด ์ ๋ขฐํ ์ ์๋ ํ์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์์กดํ๋ ๊ฒฝ์ฐ ๊ณต๊ธ๋ง ๊ณต๊ฒฉ์ ์ทจ์ฝํ ์ ์์ต๋๋ค. ์์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๊ฐ์ ํ์ผ ์์คํ ์ ์ก์ธ์คํ์ฌ ๋ฏผ๊ฐํ ๋ฐ์ดํฐ๋ฅผ ํ์น ์ ์์ต๋๋ค.
- ์๋น์ค ๊ฑฐ๋ถ ๊ณต๊ฒฉ: ์ ์์ ์ธ WebAssembly ๋ชจ๋์ CPU ์๊ฐ ๋๋ ๋ฉ๋ชจ๋ฆฌ์ ๊ฐ์ ๊ณผ๋ํ ๋ฆฌ์์ค๋ฅผ ์๋นํ์ฌ ์๋น์ค ๊ฑฐ๋ถ ๊ณต๊ฒฉ์ ์์ํ ์ ์์ต๋๋ค.
๋ณด์ ๋ชจ๋ฒ ์ฌ๋ก:
- ์ ๋ขฐํ ์ ์๋ WASI ๋ฐํ์ ์ฌ์ฉ: ์ ๊ทน์ ์ผ๋ก ์ ์ง ๊ด๋ฆฌ๋๊ณ ๋ณด์ ๊ธฐ๋ก์ด ์ข์ WASI ๋ฐํ์์ ์ ํํ์ญ์์ค.
- ์ฌ์ ์ด๋ฆฐ ๋๋ ํฐ๋ฆฌ ์ ์คํ๊ฒ ๊ตฌ์ฑ: WebAssembly ๋ชจ๋์ ํ์ํ ๊ถํ๋ง ๋ถ์ฌํ์ญ์์ค. ๋ฏผ๊ฐํ ๋ฐ์ดํฐ๊ฐ ํฌํจ๋ ๋๋ ํฐ๋ฆฌ๋ฅผ ์ฌ์ ์ด์ง ๋ง์ญ์์ค.
- ์ ์ ๋ถ์ ๋ฐ ํผ์ง ์ฌ์ฉ: ์ ์ ๋ถ์ ๋ฐ ํผ์ง ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ WebAssembly ๋ชจ๋ ๋ฐ WASI ๋ฐํ์์ ์ ์ฌ์ ๋ณด์ ์ทจ์ฝ์ ์ ์๋ณํ์ญ์์ค.
- ๋ฆฌ์์ค ์ฌ์ฉ๋ ๋ชจ๋ํฐ๋ง: WebAssembly ๋ชจ๋์ ๋ฆฌ์์ค ์ฌ์ฉ๋์ ๋ชจ๋ํฐ๋งํ์ฌ ์ ์ฌ์ ์๋น์ค ๊ฑฐ๋ถ ๊ณต๊ฒฉ์ ๊ฐ์งํ์ญ์์ค.
- ์๋๋ฐ์ฑ ๊ตฌํ: seccomp์ ๊ฐ์ ์ถ๊ฐ ์๋๋ฐ์ฑ ๊ธฐ์ ์ ์ฌ์ฉํ์ฌ WebAssembly ๋ชจ๋์ ์์คํ ๋ฆฌ์์ค ์ก์ธ์ค๋ฅผ ๋์ฑ ์ ํํ์ญ์์ค.
- ์ ๊ธฐ์ ์ธ ๋ณด์ ๊ฐ์ฌ: WASI ๋ฐํ์ ๋ฐ WebAssembly ๋ชจ๋์ ๋ํ ์ ๊ธฐ์ ์ธ ๋ณด์ ๊ฐ์ฌ๋ฅผ ์ํํ์ฌ ์ ์ฌ์ ์ทจ์ฝ์ ์ ์๋ณํ๊ณ ํด๊ฒฐํ์ญ์์ค.
WASI ํ์ผ ์์คํ ์ ๋ฏธ๋
WASI๋ ๋น ๋ฅด๊ฒ ๋ฐ์ ํ๋ ๊ธฐ์ ์ด๋ฉฐ WASI ํ์ผ ์์คํ ์ ํฅํ ์ถ๊ฐ์ ์ธ ๊ฐ๋ฐ ๋ฐ ๊ฐ์ ์ด ์ด๋ฃจ์ด์ง ๊ฒ์ผ๋ก ์์๋ฉ๋๋ค. ํฅํ ๊ฐ๋ฅํ ๋ฐฉํฅ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.- ํ์คํ๋ ๊ฐ์ ํ์ผ ์์คํ ํ์: ๊ฐ์ ํ์ผ ์์คํ ์ ๋ํ๋ด๋ ํ์คํ๋ ํ์์ ์ ์ํ๋ฉด WASI ๊ธฐ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ณต์ ๋ฐ ๋ฐฐํฌ๊ฐ ์ฉ์ดํด์ง ์ ์์ต๋๋ค. ์ฌ๊ธฐ์๋ WebAssembly ๋ชจ๋๊ณผ ๊ด๋ จ ๊ฐ์ ํ์ผ ์์คํ ์ ํจํค์งํ๊ธฐ ์ํ ์ปจํ ์ด๋์ ์ ์ฌํ ํ์์ด ํฌํจ๋ ์ ์์ต๋๋ค.
- ์ฑ๋ฅ ๊ฐ์ : ๊ณ ์ฑ๋ฅ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ง์ํ๋ ค๋ฉด WASI ๋ฐํ์ ๋ฐ ๊ฐ์ ํ์ผ ์์คํ ๊ตฌํ์ ์ฑ๋ฅ์ ์ต์ ํํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์ฌ๊ธฐ์๋ ์บ์ฑ ๋ฐ ๋น๋๊ธฐ I/O์ ๊ฐ์ ๊ธฐ์ ์ ์ฌ์ฉํ๋ ๊ฒ์ด ํฌํจ๋ ์ ์์ต๋๋ค.
- ๋ณด์ ๊ฐํ: WASI ํ์ผ ์์คํ ์ ๋ณด์์ ๋์ฑ ๊ฐํํ๋ ๊ฒ์ ์ง์์ ์ธ ๋ ธ๋ ฅ์ ๋๋ค. ์ฌ๊ธฐ์๋ ๋ณด๋ค ์ธ๋ถํ๋ ์ก์ธ์ค ์ ์ด ๋ฉ์ปค๋์ฆ์ ๊ตฌํํ๊ณ WASI ๋ฐํ์์ ๊ฒฌ๊ณ ์ฑ์ ๊ฐ์ ํ๋ ๊ฒ์ด ํฌํจ๋ ์ ์์ต๋๋ค.
- ํด๋ผ์ฐ๋ ์๋น์ค์์ ํตํฉ: WASI ํ์ผ ์์คํ ์ ํด๋ผ์ฐ๋ ์คํ ๋ฆฌ์ง ์๋น์ค์ ํตํฉํ๋ฉด WebAssembly ๋ชจ๋์ด ํด๋ผ์ฐ๋์ ์ ์ฅ๋ ๋ฐ์ดํฐ์ ์์ ํ๊ณ ์ด์ ๊ฐ๋ฅํ ๋ฐฉ์์ผ๋ก ์ก์ธ์คํ ์ ์์ต๋๋ค.
- ์๋ก์ด ํ์ผ ์์คํ ๊ธฐ๋ฅ ์ง์: ๊ธฐํธ ๋งํฌ ๋ฐ ํ๋ ๋งํฌ์ ๊ฐ์ ์๋ก์ด ํ์ผ ์์คํ ๊ธฐ๋ฅ์ ๋ํ ์ง์์ ์ถ๊ฐํ๋ฉด WASI ํ์ผ ์์คํ ์ ๊ธฐ๋ฅ์ ํ์ฅํ๊ณ ๋ ๋ค์ํ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ์ฉํ ์ ์๊ฒ ๋ฉ๋๋ค.
์ ์ธ๊ณ์ ์
WASI์ ๊ฐ์ ํ์ผ ์์คํ ์ ์ ์ธ๊ณ์ ์ผ๋ก ์ธ๊ธฐ๋ฅผ ์ป๊ณ ์์ต๋๋ค. ๋ค์ํ ์ง์ญ์์ WASI๊ฐ ์ฌ์ฉ๋๋ ๋ช ๊ฐ์ง ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.- ์ ๋ฝ: ์ ๋ฝ์ ์ฌ๋ฌ ์ฐ๊ตฌ ๊ธฐ๊ด์์๋ ๊ณผํ ์๋ฎฌ๋ ์ด์ ์ ์์ ํ๊ณ ์ด์ ๊ฐ๋ฅํ ์คํ์ ์ํด WASI๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. WASI ํ์ผ ์์คํ ์ ํตํด ์ด๋ฌํ ์๋ฎฌ๋ ์ด์ ์ ๋ฐ์ดํฐ ๋ฐ ๊ตฌ์ฑ ํ์ผ์ ํต์ ๋ ๋ฐฉ์์ผ๋ก ์ก์ธ์คํ ์ ์์ด ์ฌํ์ฑ๊ณผ ๋ณด์์ ๋ณด์ฅํฉ๋๋ค.
- ๋ถ๋ฏธ: ๋ถ๋ฏธ์ ์ฃผ์ ํด๋ผ์ฐ๋ ์ ๊ณต์ ์ฒด๋ WASI ๊ธฐ๋ฐ ์๋ฒ๋ฆฌ์ค ์ปดํจํ ํ๋ซํผ์ ์ ๊ณตํฉ๋๋ค. ์ด๋ฌํ ํ๋ซํผ์ ํตํด ๊ฐ๋ฐ์๋ ๊ธฐ๋ณธ ์ธํ๋ผ๋ฅผ ๊ด๋ฆฌํ ํ์ ์์ด ํด๋ผ์ฐ๋์์ WebAssembly ํจ์๋ฅผ ์คํํ ์ ์์ต๋๋ค. WASI ํ์ผ ์์คํ ์ ๋ฐ์ดํฐ ๋ฐ ๊ตฌ์ฑ ํ์ผ์ ์ก์ธ์คํ๋ ์์ ํ๊ณ ํจ์จ์ ์ธ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค.
- ์์์: ์์์์ ๊ธฐ์ ๋ค์ WASI๋ฅผ ์ฌ์ฉํ์ฌ ์๋ฒ ๋๋ ์์คํ ๋ฐ IoT ์ฅ์น๋ฅผ ๊ฐ๋ฐํ๊ณ ์์ต๋๋ค. WASI ํ์ผ ์์คํ ์ ์ด๋ฌํ ์ฅ์น์์ ๋ฐ์ดํฐ ๋ฐ ๊ตฌ์ฑ์ ๊ด๋ฆฌํ๋ ๊ฐ๋ณ๊ณ ์ด์ ๊ฐ๋ฅํ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค.
- ์ํ๋ฆฌ์นด: ์ํ๋ฆฌ์นด์ ๊ฐ๋ฐ์๋ค์ WASI๋ฅผ ์ฌ์ฉํ์ฌ ์คํ๋ผ์ธ ์ฐ์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๋ ๋ฐฉ์์ ๋ชจ์ํ๊ณ ์์ต๋๋ค. WASI ํ์ผ ์์คํ ์ ํตํด ์ด๋ฌํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐ์ดํฐ๋ฅผ ๋ก์ปฌ์ ์ ์ฅํ๊ณ ๋คํธ์ํฌ ์ฐ๊ฒฐ์ด ์์ ๋ ํด๋ผ์ฐ๋์ ๋๊ธฐํํ ์ ์์ต๋๋ค.
- ๋จ๋ฏธ: ๋จ๋ฏธ์ ๋ํ๋ค์ WASI๋ฅผ ์ปดํจํฐ ๊ณผํ ์ปค๋ฆฌํ๋ผ์ ํตํฉํ๊ณ ์์ต๋๋ค. ์ด๋ ์ฐจ์ธ๋ ๊ฐ๋ฐ์๋ฅผ WebAssembly ๋ฐ WASI ์ฌ์ฉ์ ๋ํด ๊ต์กํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
๊ฐ๋ฐ์๋ฅผ ์ํ ์คํ ๊ฐ๋ฅํ ํต์ฐฐ
WASI์ ๊ฐ์ ํ์ผ ์์คํ ์ ์ฌ์ฉํ๋ ค๋ ๊ฐ๋ฐ์๋ฅผ ์ํ ๋ช ๊ฐ์ง ์คํ ๊ฐ๋ฅํ ํต์ฐฐ๋ ฅ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.- ๊ฐ๋จํ ์๋ถํฐ ์์: WASI ๋ฐ WASI ํ์ผ ์์คํ ์ ๊ธฐ๋ณธ ์ฌํญ์ ์ดํดํ๊ธฐ ์ํด ๊ฐ๋จํ ์๋ถํฐ ์คํํด ๋ณด์ธ์. ์จ๋ผ์ธ์ ๋ง์ ํํ ๋ฆฌ์ผ๊ณผ ์์ ๊ฐ ์์ต๋๋ค.
- WASI SDK ์ฌ์ฉ: WASI SDK(์ํํธ์จ์ด ๊ฐ๋ฐ ํคํธ)๋ฅผ ์ฌ์ฉํ์ฌ WASI์ฉ WebAssembly ๋ชจ๋ ๊ฐ๋ฐ ํ๋ก์ธ์ค๋ฅผ ๋จ์ํํ์ธ์. ์ด๋ฌํ SDK๋ ์ฝ๋ ์ปดํ์ผ ๋ฐ ๋งํฌ๋ฅผ ๋ ์ฝ๊ฒ ํด์ฃผ๋ ๋๊ตฌ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ๊ณตํฉ๋๋ค.
- ์ฌ๋ฐ๋ฅธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ์ ํ: WASI๋ C, C++, Rust, Go๋ฅผ ํฌํจํ ๋ค์ํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ์ง์ํฉ๋๋ค. ํ๋ก์ ํธ์ ๊ฐ์ฅ ์ ํฉํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ์ ํํ์ธ์.
- ์ฒ ์ ํ๊ฒ ํ ์คํธ: WebAssembly ๋ชจ๋์ด ์์ ํ๊ณ ์์ ์ ์ธ์ง ํ์ธํ๊ธฐ ์ํด ์ฒ ์ ํ๊ฒ ํ ์คํธํ์ธ์. ์ ์ฌ์ ์ทจ์ฝ์ ์ ์๋ณํ๊ธฐ ์ํด ํผ์ง ๋ฐ ์ ์ ๋ถ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ธ์.
- ์ต์ ์ ๋ณด ์ ์ง: WASI๋ ๋น ๋ฅด๊ฒ ๋ฐ์ ํ๋ ๊ธฐ์ ์ด๋ฏ๋ก ์ต์ ๊ฐ๋ฐ ์ ๋ณด๋ฅผ ๊ณ์ ํ์ ํ์ธ์. WASI ํ์ค์ ๋ฐ๋ฅด๊ณ WASI ์ปค๋ฎค๋ํฐ์ ์ฐธ์ฌํ์ธ์.